/*
 * Título: gestHora. Aplicación web de gestión de horarios para conservatorios.
 * Alumnos:
 * - Javier Pardo Muñoz. I.T. Informática de Gestión
 * - Antonio Prior Cazorla. I.T. Informática de Gestión
 * Director: Dr. José Raúl Romero Salguero.
 *     
 *  Copyright (C) 2013 Javier Pardo Muñoz / Antonio Prior Cazorla
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.

 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package es.uco.gesthora.business.gestorRutas;

import java.io.File;

/**
 * Obtiene algunas rutas absolutas de directorios importantes para el
 * funcionamiento del sistema. Ruta de /WEB-INF, ruta de /CopiasSeguridad y ruta
 * de /instalar
 *
 * @author Javier Pardo Muñoz / Antonio Prior Cazorla
 */
public class GestorRutas {

    private static GestorRutas instance = new GestorRutas();
    private String webInfPath;
    private String backupsBDPath;
    private String instalarPath;
    private String pdfPath;

    /**
     * Constructor por defecto
     */
    private GestorRutas() {
        File myClass = new File(getClass().getProtectionDomain().getCodeSource().getLocation().getFile());

        //Cuenta carpetas hasta llegar a web-inf
        int packageSubFolder = getClass().getPackage().getName().replaceAll("[^.]", "").length() + 3;

        for (int i = 0; i < packageSubFolder; i++) {
            myClass = myClass.getParentFile();
        }

        this.webInfPath = myClass.getAbsolutePath().replaceAll("%20", " ") + File.separator;

        //Cuenta carpetas hasta llegar a raiz del proyecto
        int packageSubFolder2 = getClass().getPackage().getName().replaceAll("[^.]", "").length() + 4;

        myClass = new File(getClass().getProtectionDomain().getCodeSource().getLocation().getFile());

        for (int i = 0; i < packageSubFolder2; i++) {
            myClass = myClass.getParentFile();
        }

        //Obtiene la ruta de la carpeta /copiasSeguridad
        this.backupsBDPath = myClass.getAbsolutePath().replaceAll("%20", " ") + "/copiasSeguridad" + File.separator;
        //Obtiene la ruta de /instalar
        this.instalarPath = myClass.getAbsolutePath().replaceAll("%20", " ") + "/instalar" + File.separator;
        //Obtiene la ruta de /pdf
        this.pdfPath = myClass.getAbsolutePath().replaceAll("%20", " ") + "/pdf" + File.separator;

    }

    /**
     * Devuelve una instancia de la clase usando el patrón Singleton
     *
     * @return Instancia de la clase GestorRutas
     */
    public static GestorRutas getInstance() {
        return instance;
    }

    /**
     * Devuelve la ruta absoluta de /WEB-INF
     *
     * @return cadena con la ruta
     */
    public String getWebInfPath() {
        return this.webInfPath;
    }

    /**
     * Devuelve la ruta absoluta de /CopiasSeguridad
     *
     * @return cadena con la ruta
     */
    public String getBackupsBDPath() {
        return this.backupsBDPath;
    }

    /**
     * Devuelve la ruta absoluta de /instalar
     *
     * @return cadena con la ruta
     */
    public String getInstalarPath() {
        return this.instalarPath;
    }

    /**
     * Devuelve la ruta absoluta de /pdf
     *
     * @return cadena con la ruta
     */
    public String getPDFPath() {
        return this.pdfPath;
    }
}
